/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uca.sisbec.actions.gastos;

import com.uca.sisbec.beans.NameAndCarnetBean;
import com.uca.sisbec.commons.HibernateAction;
import com.uca.sisbec.helpers.gastos.GastosHelper;
import com.uca.sisbec.helpers.gastos.GastosProyectosHelper;
import com.uca.sisbec.helpers.gastos.PresupuestoHelper;
import com.uca.sisbec.mapping.Gasto;
import com.uca.sisbec.mapping.GastosDeProyectos;
import com.uca.sisbec.mapping.Usuario;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.*;

/**
 *
 * @author Alex
 */
public class PresupuestoAction extends HibernateAction {
    
    public ActionForward init(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        request.setAttribute("drawbutton", "YES");
        request.setAttribute("text","A");
        PresupuestoHelper ph = new PresupuestoHelper(getSession(request));
        if(ph.ExistePresupuestoMesActual()){
            ActionMessages info = new ActionMessages();
            info.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("presupuesto.existe"));
            request.setAttribute("info", info);
            request.setAttribute("fecha", GetFechaActual());
            request.setAttribute("drawbutton", "NO");
            request.setAttribute("text","B");
        }
        request.setAttribute("fecha", GetFechaActual());
        
        GastosHelper gh = new GastosHelper(getSession(request));
        List<Gasto> ListaGastosRegsDelMes = gh.GetGastosDelMes("REGISTRADO",1);       
        request.setAttribute("gastosDataReg", ListaGastosRegsDelMes);
        request.setAttribute("gastosDataElim", gh.GetGastosDelMes("ELIMINADO",1));
        request.setAttribute("gastosDataCancel", gh.GetGastosDelMes("CANCELADO",1));
        
        GastosProyectosHelper gph = new GastosProyectosHelper(getSession(request));
        List<GastosDeProyectos> ListaGastosProysRegsDelMes = gph.GetGastosProyectosMesActual("REGISTRADO",1);
        request.setAttribute("gastosProyDataReg", ListaGastosProysRegsDelMes);
        request.setAttribute("gastosProyDataElim", gph.GetGastosProyectosMesActual("ELIMINADO",1));
        request.setAttribute("gastosProyDataCancel", gph.GetGastosProyectosMesActual("CANCELADO",1));
        
        if(ListaGastosRegsDelMes.size() < 1 && ListaGastosProysRegsDelMes.size() < 1){
            ActionMessages info = new ActionMessages();
            info.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("gastos.noregistrados"));
            request.setAttribute("info", info);
            request.setAttribute("drawbutton", "NO");
            request.setAttribute("text","C");
        }
        return mapping.findForward("success");
    }
    
    public ActionForward RegistrarPresupuesto(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        PresupuestoHelper ph = new PresupuestoHelper(getSession(request));
        ph.RegistrarPresupuestoDB(GetUsuario(request));
        
        ActionMessages msg = new ActionMessages();
        msg.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("presupuesto.registrado"));
        request.setAttribute("msg", msg);
        
        ActionMessages info = new ActionMessages();      
        info.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("presupuesto.info"));
        request.setAttribute("info", info);
        
        GastosHelper gh = new GastosHelper(getSession(request));
        request.setAttribute("fecha", GetFechaActual());
        request.setAttribute("gastosDataReg", gh.GetGastosDelMes("REGISTRADO",1));
        request.setAttribute("gastosDataElim", gh.GetGastosDelMes("ELIMINADO",1));
        request.setAttribute("gastosDataCancel", gh.GetGastosDelMes("CANCELADO",1));
        
        GastosProyectosHelper gph = new GastosProyectosHelper(getSession(request));
        request.setAttribute("gastosProyDataReg", gph.GetGastosProyectosMesActual("REGISTRADO",1));
        request.setAttribute("gastosProyDataElim", gph.GetGastosProyectosMesActual("ELIMINADO",1));
        request.setAttribute("gastosProyDataCancel", gph.GetGastosProyectosMesActual("CANCELADO",1));
        
        return mapping.findForward("success");
    }
    
    public ActionForward initViewBenef(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        GastosHelper gh = new GastosHelper(getSession(request));
        Gasto gasto = gh.GetGastoDB(Integer.parseInt(request.getParameter("idG")));
        List<NameAndCarnetBean> listaBecs = gh.ListaBecariosBenef(gasto.getIdGasto());
        request.setAttribute("objGasto", gasto);
        request.setAttribute("listaBecs", listaBecs);
        return mapping.findForward("vistaBeneficiados");
    }
    
    private String GetFechaActual(){
        SimpleDateFormat formateador = new SimpleDateFormat("MMMM 'de' yyyy", new Locale("es", "ES"));
        Date fechaDate = new Date();
        String fecha = formateador.format(fechaDate);
        return fecha;    
    }
    
    private String GetUsuario(HttpServletRequest request){
        Usuario user = (Usuario) request.getSession().getAttribute(_USER);
        return user.getAlias();
    }

}
